package com.tbit.uqbike.webmanager.util;

import java.util.HashMap;
import java.util.Map;

/**
 * 用户信息上下文
 *
 * @author <a href="mailto:zhang.zhiliang@tbit.com.cn">Zhang ZhiLiang</a>
 * @version 1.0
 * @see <a href="http://adsl1.tbit.com.cn:21490/pages/viewpage.action?pageId=82182491">订单号规范</a>
 * @since 2025/2/18
 */
public class UserContextUtil {
    public static final String USER_KEY = "USER";

    // 使用 ThreadLocal 存储用户信息
    private static final ThreadLocal<Map<String, Object>> userContext = new ThreadLocal<>();

    /**
     * 设置用户信息到上下文中
     *
     * @param key   用户信息的键
     * @param value 用户信息的值
     */
    public static void set(String key, Object value) {
        if (userContext.get() == null) {
            userContext.set(new HashMap<>());
        }
        userContext.get().put(key, value);
    }

    /**
     * 获取用户信息
     *
     * @param key 用户信息的键
     * @return 用户信息的值
     */
    public static Object get(String key) {
        Map<String, Object> context = userContext.get();
        return context != null ? context.get(key) : null;
    }

    /**
     * 移除指定的用户信息
     *
     * @param key 用户信息的键
     */
    public static void remove(String key) {
        Map<String, Object> context = userContext.get();
        if (context != null) {
            context.remove(key);
        }
    }

    /**
     * 清空当前线程的用户上下文
     */
    public static void clear() {
        userContext.remove();
    }

    /**
     * 获取整个用户上下文
     *
     * @return 当前线程的用户上下文
     */
    public static Map<String, Object> getContext() {
        return userContext.get();
    }

}
